(() => {
  //抽象类：包含抽象方法（一般没有具体的内容实现），也可以包含实例化的方法，抽象类是不能被实例化的，
  // 用来让子类实例化以及实现抽象方法

  // 抽象类的目的是为子类服务的
  abstract class Animal {

    // abstract name:string = '动物'


    // 抽象方法--不能有具体的实例方法
    abstract eat()

    // 实例化方法
    sayHi() {
      console.log('你好呀');

    }
  }
  // const animal = new Animal()//抽象类不能被实例化


  class Cat extends Animal {
    // 重新实现抽象类中的方法
    eat() {
      console.log('猫吃肉')
    }
  }

  const cat = new Cat()
  cat.eat()
  cat.sayHi()
})()